package com.skiving.cloud.admin.service.impl;

import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.solon.service.impl.ServiceImpl;
import com.skiving.cloud.common.utils.PageParameter;
import com.skiving.cloud.admin.entity.SysConfig;
import com.skiving.cloud.admin.mapper.SysConfigMapper;
import com.skiving.cloud.admin.service.SysConfigService;
import org.noear.solon.annotation.Component;
import org.noear.solon.Utils;

/**
 * 系统参数配置信息表 服务层实现。
 *
 * @author skivingcloud
 * @since 2025-03-08
 */
@Component
public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig>  implements SysConfigService {
    /**
     * 分页查询系统参数配置信息表
     *
     * @param parameter 查询参数
     * @return 分页查询结果
     */
    @Override
    public Page<SysConfig> queryByPage(PageParameter<SysConfig> parameter){
        Page<SysConfig> page = new Page<>(parameter.getPage(), parameter.getPageSize());
        QueryWrapper queryWrapper = QueryWrapper.create();
        if (parameter.getParam() != null) {
            //查询条件
            if (Utils.isNotBlank(parameter.getParam().getId())) {
                queryWrapper.and(SysConfig::getId).like(parameter.getParam().getId());
            }
            if (Utils.isNotBlank(parameter.getParam().getParamKey())) {
                queryWrapper.and(SysConfig::getParamKey).like(parameter.getParam().getParamKey());
            }
            if (Utils.isNotBlank(parameter.getParam().getParamValue())) {
                queryWrapper.and(SysConfig::getParamValue).like(parameter.getParam().getParamValue());
            }
            if (Utils.isNotBlank(parameter.getParam().getStatus())) {
                queryWrapper.and(SysConfig::getStatus).like(parameter.getParam().getStatus());
            }
            if (Utils.isNotBlank(parameter.getParam().getRemark())) {
                queryWrapper.and(SysConfig::getRemark).like(parameter.getParam().getRemark());
            }
            if (Utils.isNotBlank(parameter.getParam().getCreator())) {
                queryWrapper.and(SysConfig::getCreator).like(parameter.getParam().getCreator());
            }
            if (Utils.isNotBlank(parameter.getParam().getModUser())) {
                queryWrapper.and(SysConfig::getModUser).like(parameter.getParam().getModUser());
            }
        }
        return this.page(page, queryWrapper);
    }

    /**
     * 根据参数编码获取参数值
     *
     * @param key 参数编码
     * @return 参数对象
     */
    @Override
    public SysConfig getConfigValueByKey(String key) {
        QueryWrapper queryWrapper = QueryWrapper.create().where(SysConfig::getParamKey).eq(key);
        return this.mapper.selectOneByQuery(queryWrapper);
    }
}
